home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F83911_HTMLPrintVisitor.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-07-14  |  10.3 KB  |  500 lines

  1. package com.ibm.xml.parser.util;
  2.  
  3. import com.ibm.xml.parser.AttDef;
  4. import com.ibm.xml.parser.Attlist;
  5. import com.ibm.xml.parser.DTD;
  6. import com.ibm.xml.parser.ElementDecl;
  7. import com.ibm.xml.parser.EntityDecl;
  8. import com.ibm.xml.parser.GeneralReference;
  9. import com.ibm.xml.parser.Parent;
  10. import com.ibm.xml.parser.TXAttribute;
  11. import com.ibm.xml.parser.TXCDATASection;
  12. import com.ibm.xml.parser.TXCharacterData;
  13. import com.ibm.xml.parser.TXDocument;
  14. import com.ibm.xml.parser.TXElement;
  15. import com.ibm.xml.parser.TXNotation;
  16. import com.ibm.xml.parser.TXPI;
  17. import com.ibm.xml.parser.TXText;
  18. import com.ibm.xml.parser.ToNextSiblingTraversalException;
  19. import com.ibm.xml.parser.ToXMLStringVisitor;
  20. import com.ibm.xml.parser.Util;
  21. import java.io.Writer;
  22. import java.util.Hashtable;
  23. import org.w3c.dom.Node;
  24.  
  25. public class HTMLPrintVisitor extends ToXMLStringVisitor {
  26.    protected int level;
  27.    protected String doctype;
  28.    static Hashtable s_empties = new Hashtable();
  29.    static Hashtable s_entities;
  30.  
  31.    public HTMLPrintVisitor(Writer var1, String var2, String var3) {
  32.       super(var1, var2);
  33.       this.doctype = var3;
  34.       super.isPrintNonSpecifiedAttributes = false;
  35.    }
  36.  
  37.    public HTMLPrintVisitor(Writer var1, String var2) {
  38.       this(var1, var2, (String)null);
  39.    }
  40.  
  41.    public HTMLPrintVisitor(Writer var1) {
  42.       this(var1, (String)null, (String)null);
  43.    }
  44.  
  45.    public void visitDocumentPre(TXDocument var1) throws Exception {
  46.       if (this.doctype != null) {
  47.          super.writer.write(this.doctype);
  48.       }
  49.  
  50.    }
  51.  
  52.    public void visitDocumentPost(TXDocument var1) throws Exception {
  53.       super.writer.write("\n");
  54.       super.writer.flush();
  55.    }
  56.  
  57.    public void visitElementPre(TXElement var1) throws Exception {
  58.       ++this.level;
  59.       super.writer.write("<" + var1.getTagName().toUpperCase());
  60.       TXAttribute[] var2 = var1.getAttributeArray();
  61.  
  62.       for(int var3 = 0; var3 < var2.length; ++var3) {
  63.          TXAttribute var4 = var2[var3];
  64.          if (super.isPrintNonSpecifiedAttributes || var4.getSpecified()) {
  65.             this.visitAttributePre(var4);
  66.          }
  67.       }
  68.  
  69.       super.writer.write(">");
  70.    }
  71.  
  72.    public void visitElementPost(TXElement var1) throws Exception {
  73.       String var2 = var1.getTagName().toUpperCase();
  74.       if (((Parent)var1).hasChildNodes() || s_empties.get(var2) == null) {
  75.          super.writer.write("</" + var2 + ">");
  76.       }
  77.  
  78.       --this.level;
  79.    }
  80.  
  81.    public void visitAttributePre(TXAttribute var1) throws Exception {
  82.       String var2 = var1.getName().toLowerCase();
  83.       if (var2.equals("xml:lang")) {
  84.          var2 = "lang";
  85.       }
  86.  
  87.       super.writer.write(" " + var2 + "=\"" + Util.backReference(var1.getValue(), "&<>\"", super.encoding) + "\"");
  88.    }
  89.  
  90.    public void visitPIPre(TXPI var1) throws Exception {
  91.    }
  92.  
  93.    public void visitTextPre(TXText var1) throws Exception {
  94.       if (this.level > 0) {
  95.          if (var1 instanceof TXCDATASection) {
  96.             super.writer.write(((TXCharacterData)var1).getData());
  97.             return;
  98.          }
  99.  
  100.          super.writer.write(Util.backReference(((TXCharacterData)var1).getData(), super.encoding));
  101.       }
  102.  
  103.    }
  104.  
  105.    public void visitDTDPre(DTD var1) throws Exception {
  106.       throw new ToNextSiblingTraversalException();
  107.    }
  108.  
  109.    public void visitDTDPost(DTD var1) throws Exception {
  110.    }
  111.  
  112.    public void visitElementDeclPre(ElementDecl var1) throws Exception {
  113.    }
  114.  
  115.    public void visitAttlistPre(Attlist var1) throws Exception {
  116.    }
  117.  
  118.    public void visitAttDefPre(AttDef var1) throws Exception {
  119.    }
  120.  
  121.    public void visitEntityDeclPre(EntityDecl var1) throws Exception {
  122.    }
  123.  
  124.    public void visitNotationPre(TXNotation var1) throws Exception {
  125.    }
  126.  
  127.    public void visitGeneralReferencePre(GeneralReference var1) throws Exception {
  128.       String var2 = var1.getName();
  129.       if (s_entities.get(var2) != null && ((Parent)var1).getChildNodes().getLength() == 1) {
  130.          Node var3 = ((Parent)var1).getFirstChild();
  131.          if (var3.getNodeType() == 3 && var3.getNodeValue().length() == 1) {
  132.             super.writer.write('&' + var2 + ';');
  133.             throw new ToNextSiblingTraversalException();
  134.          }
  135.       }
  136.  
  137.    }
  138.  
  139.    static {
  140.       s_empties.put("AREA", "AREA");
  141.       s_empties.put("BASE", "BASE");
  142.       s_empties.put("BR", "BR");
  143.       s_empties.put("COL", "COL");
  144.       s_empties.put("HR", "HR");
  145.       s_empties.put("IMG", "IMG");
  146.       s_empties.put("INPUT", "INPUT");
  147.       s_empties.put("LINK", "LINK");
  148.       s_empties.put("META", "META");
  149.       s_empties.put("PARAM", "PARAM");
  150.       s_empties.put("BASEFONT", "BASEFONT");
  151.       s_empties.put("FRAME", "FRAME");
  152.       s_empties.put("ISINDEX", "ISINDEX");
  153.       s_entities = new Hashtable();
  154.       s_entities.put("nbsp", "nbsp");
  155.       s_entities.put("iexcl", "iexcl");
  156.       s_entities.put("cent", "cent");
  157.       s_entities.put("pound", "pound");
  158.       s_entities.put("curren", "curren");
  159.       s_entities.put("yen", "yen");
  160.       s_entities.put("brvbar", "brvbar");
  161.       s_entities.put("sect", "sect");
  162.       s_entities.put("uml", "uml");
  163.       s_entities.put("copy", "copy");
  164.       s_entities.put("ordf", "ordf");
  165.       s_entities.put("laquo", "laquo");
  166.       s_entities.put("not", "not");
  167.       s_entities.put("shy", "shy");
  168.       s_entities.put("reg", "reg");
  169.       s_entities.put("macr", "macr");
  170.       s_entities.put("deg", "deg");
  171.       s_entities.put("plusmn", "plusmn");
  172.       s_entities.put("sup2", "sup2");
  173.       s_entities.put("sup3", "sup3");
  174.       s_entities.put("acute", "acute");
  175.       s_entities.put("micro", "micro");
  176.       s_entities.put("para", "para");
  177.       s_entities.put("middot", "middot");
  178.       s_entities.put("cedil", "cedil");
  179.       s_entities.put("sup1", "sup1");
  180.       s_entities.put("ordm", "ordm");
  181.       s_entities.put("raquo", "raquo");
  182.       s_entities.put("frac14", "frac14");
  183.       s_entities.put("frac12", "frac12");
  184.       s_entities.put("frac34", "frac34");
  185.       s_entities.put("iquest", "iquest");
  186.       s_entities.put("Agrave", "Agrave");
  187.       s_entities.put("Aacute", "Aacute");
  188.       s_entities.put("Acirc", "Acirc");
  189.       s_entities.put("Atilde", "Atilde");
  190.       s_entities.put("Auml", "Auml");
  191.       s_entities.put("Aring", "Aring");
  192.       s_entities.put("AElig", "AElig");
  193.       s_entities.put("Ccedil", "Ccedil");
  194.       s_entities.put("Egrave", "Egrave");
  195.       s_entities.put("Eacute", "Eacute");
  196.       s_entities.put("Ecirc", "Ecirc");
  197.       s_entities.put("Euml", "Euml");
  198.       s_entities.put("Igrave", "Igrave");
  199.       s_entities.put("Iacute", "Iacute");
  200.       s_entities.put("Icirc", "Icirc");
  201.       s_entities.put("Iuml", "Iuml");
  202.       s_entities.put("ETH", "ETH");
  203.       s_entities.put("Ntilde", "Ntilde");
  204.       s_entities.put("Ograve", "Ograve");
  205.       s_entities.put("Oacute", "Oacute");
  206.       s_entities.put("Ocirc", "Ocirc");
  207.       s_entities.put("Otilde", "Otilde");
  208.       s_entities.put("Ouml", "Ouml");
  209.       s_entities.put("times", "times");
  210.       s_entities.put("Oslash", "Oslash");
  211.       s_entities.put("Ugrave", "Ugrave");
  212.       s_entities.put("Uacute", "Uacute");
  213.       s_entities.put("Ucirc", "Ucirc");
  214.       s_entities.put("Uuml", "Uuml");
  215.       s_entities.put("Yacute", "Yacute");
  216.       s_entities.put("THORN", "THORN");
  217.       s_entities.put("szlig", "szlig");
  218.       s_entities.put("agrave", "agrave");
  219.       s_entities.put("aacute", "aacute");
  220.       s_entities.put("acirc", "acirc");
  221.       s_entities.put("atilde", "atilde");
  222.       s_entities.put("auml", "auml");
  223.       s_entities.put("aring", "aring");
  224.       s_entities.put("aelig", "aelig");
  225.       s_entities.put("ccedil", "ccedil");
  226.       s_entities.put("egrave", "egrave");
  227.       s_entities.put("eacute", "eacute");
  228.       s_entities.put("ecirc", "ecirc");
  229.       s_entities.put("euml", "euml");
  230.       s_entities.put("igrave", "igrave");
  231.       s_entities.put("iacute", "iacute");
  232.       s_entities.put("icirc", "icirc");
  233.       s_entities.put("iuml", "iuml");
  234.       s_entities.put("eth", "eth");
  235.       s_entities.put("ntilde", "ntilde");
  236.       s_entities.put("ograve", "ograve");
  237.       s_entities.put("oacute", "oacute");
  238.       s_entities.put("ocirc", "ocirc");
  239.       s_entities.put("otilde", "otilde");
  240.       s_entities.put("ouml", "ouml");
  241.       s_entities.put("divide", "divide");
  242.       s_entities.put("oslash", "oslash");
  243.       s_entities.put("ugrave", "ugrave");
  244.       s_entities.put("uacute", "uacute");
  245.       s_entities.put("ucirc", "ucirc");
  246.       s_entities.put("uuml", "uuml");
  247.       s_entities.put("yacute", "yacute");
  248.       s_entities.put("thorn", "thorn");
  249.       s_entities.put("yuml", "yuml");
  250.       s_entities.put("fnof", "fnof");
  251.       s_entities.put("Alpha", "Alpha");
  252.       s_entities.put("Beta", "Beta");
  253.       s_entities.put("Gamma", "Gamma");
  254.       s_entities.put("Delta", "Delta");
  255.       s_entities.put("Epsilon", "Epsilon");
  256.       s_entities.put("Zeta", "Zeta");
  257.       s_entities.put("Eta", "Eta");
  258.       s_entities.put("Theta", "Theta");
  259.       s_entities.put("Iota", "Iota");
  260.       s_entities.put("Kappa", "Kappa");
  261.       s_entities.put("Lambda", "Lambda");
  262.       s_entities.put("Mu", "Mu");
  263.       s_entities.put("Nu", "Nu");
  264.       s_entities.put("Xi", "Xi");
  265.       s_entities.put("Omicron", "Omicron");
  266.       s_entities.put("Pi", "Pi");
  267.       s_entities.put("Rho", "Rho");
  268.       s_entities.put("Sigma", "Sigma");
  269.       s_entities.put("Tau", "Tau");
  270.       s_entities.put("Upsilon", "Upsilon");
  271.       s_entities.put("Phi", "Phi");
  272.       s_entities.put("Chi", "Chi");
  273.       s_entities.put("Psi", "Psi");
  274.       s_entities.put("Omega", "Omega");
  275.       s_entities.put("alpha", "alpha");
  276.       s_entities.put("beta", "beta");
  277.       s_entities.put("gamma", "gamma");
  278.       s_entities.put("delta", "delta");
  279.       s_entities.put("epsilon", "epsilon");
  280.       s_entities.put("zeta", "zeta");
  281.       s_entities.put("eta", "eta");
  282.       s_entities.put("theta", "theta");
  283.       s_entities.put("iota", "iota");
  284.       s_entities.put("kappa", "kappa");
  285.       s_entities.put("lambda", "lambda");
  286.       s_entities.put("mu", "mu");
  287.       s_entities.put("nu", "nu");
  288.       s_entities.put("xi", "xi");
  289.       s_entities.put("omicron", "omicron");
  290.       s_entities.put("pi", "pi");
  291.       s_entities.put("rho", "rho");
  292.       s_entities.put("sigmaf", "sigmaf");
  293.       s_entities.put("sigma", "sigma");
  294.       s_entities.put("tau", "tau");
  295.       s_entities.put("upsilon", "upsilon");
  296.       s_entities.put("phi", "phi");
  297.       s_entities.put("chi", "chi");
  298.       s_entities.put("psi", "psi");
  299.       s_entities.put("omega", "omega");
  300.       s_entities.put("thetasym", "thetasym");
  301.       s_entities.put("upsih", "upsih");
  302.       s_entities.put("piv", "piv");
  303.       s_entities.put("bull", "bull");
  304.       s_entities.put("hellip", "hellip");
  305.       s_entities.put("prime", "prime");
  306.       s_entities.put("Prime", "Prime");
  307.       s_entities.put("oline", "oline");
  308.       s_entities.put("frasl", "frasl");
  309.       s_entities.put("weierp", "weierp");
  310.       s_entities.put("image", "image");
  311.       s_entities.put("real", "real");
  312.       s_entities.put("trade", "trade");
  313.       s_entities.put("alefsym", "alefsym");
  314.       s_entities.put("larr", "larr");
  315.       s_entities.put("uarr", "uarr");
  316.       s_entities.put("rarr", "rarr");
  317.       s_entities.put("darr", "darr");
  318.       s_entities.put("harr", "harr");
  319.       s_entities.put("crarr", "crarr");
  320.       s_entities.put("lArr", "lArr");
  321.       s_entities.put("uArr", "uArr");
  322.       s_entities.put("rArr", "rArr");
  323.       s_entities.put("dArr", "dArr");
  324.       s_entities.put("hArr", "hArr");
  325.       s_entities.put("forall", "forall");
  326.       s_entities.put("part", "part");
  327.       s_entities.put("exist", "exist");
  328.       s_entities.put("empty", "empty");
  329.       s_entities.put("nabla", "nabla");
  330.       s_entities.put("isin", "isin");
  331.       s_entities.put("notin", "notin");
  332.       s_entities.put("ni", "ni");
  333.       s_entities.put("prod", "prod");
  334.       s_entities.put("sum", "sum");
  335.       s_entities.put("minus", "minus");
  336.       s_entities.put("lowast", "lowast");
  337.       s_entities.put("radic", "radic");
  338.       s_entities.put("prop", "prop");
  339.       s_entities.put("infin", "infin");
  340.       s_entities.put("ang", "ang");
  341.       s_entities.put("and", "and");
  342.       s_entities.put("or", "or");
  343.       s_entities.put("cap", "cap");
  344.       s_entities.put("cup", "cup");
  345.       s_entities.put("int", "int");
  346.       s_entities.put("there4", "there4");
  347.       s_entities.put("sim", "sim");
  348.       s_entities.put("cong", "cong");
  349.       s_entities.put("asymp", "asymp");
  350.       s_entities.put("ne", "ne");
  351.       s_entities.put("equiv", "equiv");
  352.       s_entities.put("le", "le");
  353.       s_entities.put("ge", "ge");
  354.       s_entities.put("sub", "sub");
  355.       s_entities.put("sup", "sup");
  356.       s_entities.put("nsub", "nsub");
  357.       s_entities.put("sube", "sube");
  358.       s_entities.put("supe", "supe");
  359.       s_entities.put("oplus", "oplus");
  360.       s_entities.put("otimes", "otimes");
  361.       s_entities.put("perp", "perp");
  362.       s_entities.put("sdot", "sdot");
  363.       s_entities.put("lceil", "lceil");
  364.       s_entities.put("rceil", "rceil");
  365.       s_entities.put("lfloor", "lfloor");
  366.       s_entities.put("rfloor", "rfloor");
  367.       s_entities.put("lang", "lang");
  368.       s_entities.put("rang", "rang");
  369.       s_entities.put("loz", "loz");
  370.       s_entities.put("spades", "spades");
  371.       s_entities.put("clubs", "clubs");
  372.       s_entities.put("hearts", "hearts");
  373.       s_entities.put("diams", "diams");
  374.       s_entities.put("fnof", "fnof");
  375.       s_entities.put("Alpha", "Alpha");
  376.       s_entities.put("Beta", "Beta");
  377.       s_entities.put("Gamma", "Gamma");
  378.       s_entities.put("Delta", "Delta");
  379.       s_entities.put("Epsilon", "Epsilon");
  380.       s_entities.put("Zeta", "Zeta");
  381.       s_entities.put("Eta", "Eta");
  382.       s_entities.put("Theta", "Theta");
  383.       s_entities.put("Iota", "Iota");
  384.       s_entities.put("Kappa", "Kappa");
  385.       s_entities.put("Lambda", "Lambda");
  386.       s_entities.put("Mu", "Mu");
  387.       s_entities.put("Nu", "Nu");
  388.       s_entities.put("Xi", "Xi");
  389.       s_entities.put("Omicron", "Omicron");
  390.       s_entities.put("Pi", "Pi");
  391.       s_entities.put("Rho", "Rho");
  392.       s_entities.put("Sigma", "Sigma");
  393.       s_entities.put("Tau", "Tau");
  394.       s_entities.put("Upsilon", "Upsilon");
  395.       s_entities.put("Phi", "Phi");
  396.       s_entities.put("Chi", "Chi");
  397.       s_entities.put("Psi", "Psi");
  398.       s_entities.put("Omega", "Omega");
  399.       s_entities.put("alpha", "alpha");
  400.       s_entities.put("beta", "beta");
  401.       s_entities.put("gamma", "gamma");
  402.       s_entities.put("delta", "delta");
  403.       s_entities.put("epsilon", "epsilon");
  404.       s_entities.put("zeta", "zeta");
  405.       s_entities.put("eta", "eta");
  406.       s_entities.put("theta", "theta");
  407.       s_entities.put("iota", "iota");
  408.       s_entities.put("kappa", "kappa");
  409.       s_entities.put("lambda", "lambda");
  410.       s_entities.put("mu", "mu");
  411.       s_entities.put("nu", "nu");
  412.       s_entities.put("xi", "xi");
  413.       s_entities.put("omicron", "omicron");
  414.       s_entities.put("pi", "pi");
  415.       s_entities.put("rho", "rho");
  416.       s_entities.put("sigmaf", "sigmaf");
  417.       s_entities.put("sigma", "sigma");
  418.       s_entities.put("tau", "tau");
  419.       s_entities.put("upsilon", "upsilon");
  420.       s_entities.put("phi", "phi");
  421.       s_entities.put("chi", "chi");
  422.       s_entities.put("psi", "psi");
  423.       s_entities.put("omega", "omega");
  424.       s_entities.put("thetasym", "thetasym");
  425.       s_entities.put("upsih", "upsih");
  426.       s_entities.put("piv", "piv");
  427.       s_entities.put("bull", "bull");
  428.       s_entities.put("hellip", "hellip");
  429.       s_entities.put("prime", "prime");
  430.       s_entities.put("Prime", "Prime");
  431.       s_entities.put("oline", "oline");
  432.       s_entities.put("frasl", "frasl");
  433.       s_entities.put("weierp", "weierp");
  434.       s_entities.put("image", "image");
  435.       s_entities.put("real", "real");
  436.       s_entities.put("trade", "trade");
  437.       s_entities.put("alefsym", "alefsym");
  438.       s_entities.put("larr", "larr");
  439.       s_entities.put("uarr", "uarr");
  440.       s_entities.put("rarr", "rarr");
  441.       s_entities.put("darr", "darr");
  442.       s_entities.put("harr", "harr");
  443.       s_entities.put("crarr", "crarr");
  444.       s_entities.put("lArr", "lArr");
  445.       s_entities.put("uArr", "uArr");
  446.       s_entities.put("rArr", "rArr");
  447.       s_entities.put("dArr", "dArr");
  448.       s_entities.put("hArr", "hArr");
  449.       s_entities.put("forall", "forall");
  450.       s_entities.put("part", "part");
  451.       s_entities.put("exist", "exist");
  452.       s_entities.put("empty", "empty");
  453.       s_entities.put("nabla", "nabla");
  454.       s_entities.put("isin", "isin");
  455.       s_entities.put("notin", "notin");
  456.       s_entities.put("ni", "ni");
  457.       s_entities.put("prod", "prod");
  458.       s_entities.put("sum", "sum");
  459.       s_entities.put("minus", "minus");
  460.       s_entities.put("lowast", "lowast");
  461.       s_entities.put("radic", "radic");
  462.       s_entities.put("prop", "prop");
  463.       s_entities.put("infin", "infin");
  464.       s_entities.put("ang", "ang");
  465.       s_entities.put("and", "and");
  466.       s_entities.put("or", "or");
  467.       s_entities.put("cap", "cap");
  468.       s_entities.put("cup", "cup");
  469.       s_entities.put("int", "int");
  470.       s_entities.put("there4", "there4");
  471.       s_entities.put("sim", "sim");
  472.       s_entities.put("cong", "cong");
  473.       s_entities.put("asymp", "asymp");
  474.       s_entities.put("ne", "ne");
  475.       s_entities.put("equiv", "equiv");
  476.       s_entities.put("le", "le");
  477.       s_entities.put("ge", "ge");
  478.       s_entities.put("sub", "sub");
  479.       s_entities.put("sup", "sup");
  480.       s_entities.put("nsub", "nsub");
  481.       s_entities.put("sube", "sube");
  482.       s_entities.put("supe", "supe");
  483.       s_entities.put("oplus", "oplus");
  484.       s_entities.put("otimes", "otimes");
  485.       s_entities.put("perp", "perp");
  486.       s_entities.put("sdot", "sdot");
  487.       s_entities.put("lceil", "lceil");
  488.       s_entities.put("rceil", "rceil");
  489.       s_entities.put("lfloor", "lfloor");
  490.       s_entities.put("rfloor", "rfloor");
  491.       s_entities.put("lang", "lang");
  492.       s_entities.put("rang", "rang");
  493.       s_entities.put("loz", "loz");
  494.       s_entities.put("spades", "spades");
  495.       s_entities.put("clubs", "clubs");
  496.       s_entities.put("hearts", "hearts");
  497.       s_entities.put("diams", "diams");
  498.    }
  499. }
  500.